package com.zsrt.java.day20161227.zzd.demo2;

import java.util.Arrays;

public class Doudizhu1 {
	 public static void main(String[] args) {  
	        //生成一副牌的数字，简称牌库
	        int[] pkCode=new int[54];                                              
	        for(int i=0;i<54;i++){  
	            pkCode[i]=i;  
	        }  
	        //花色  
	        String[] color={"方","梅","红","黑"};                                  
	        //数字 
	        String[] num={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};   
	        //生成数组实现空的54个位置，存放随机洗牌后的牌，简称牌位  
	        int[] pk=new int[54];  
	        for(int i=0;i<pk.length;i++){  
	            //随机生成数字  
	            int index=(int)(Math.random()*(pk.length-i));                     
	            //将生成的下标对应的牌存入54个空牌位。然后将原来牌库中拿到的牌移除，并重新洗牌 
	            pk[i]=pkCode[index];  
	            remove(pkCode,index);  
	        }  
	        //生成三个用户以及底牌三张  
	        int[] pk1=new int[17];  
	        int[] pk2=new int[17];  
	        int[] pk3=new int[17];  
	        int[] dz=new int[3];  
	        //将得到的牌拷贝倒数组当中 ，用于排列  
	        System.arraycopy(pk, 0, pk1, 0, 17);  
	        System.arraycopy(pk, 17, pk2, 0, 17);  
	        System.arraycopy(pk, 34, pk3, 0, 17);  
	        System.arraycopy(pk, 51, dz, 0,3);  
	        sort(pk1);  
	        sort(pk2);  
	        sort(pk3);  
	        sort(dz);  
	        //声明最后存放牌结果的数组  
	        String[] pk1Char = new String[17];  
	        String[] pk2Char = new String[17];  
	        String[] pk3Char = new String[17];  
	        String[] dzChar = new String[3];  
	        //调用花色生成方法，并复制结果到最后的结果String 数组当中 
	        copy(pk1,pk1Char,color,num);  
	        copy(pk2,pk2Char,color,num);  
	        copy(pk3,pk3Char,color,num);  
	        copy(dz,dzChar,color,num);  
	        //打印输出结果  
	        System.out.println(Arrays.toString(pk1Char));             
	        System.out.println(Arrays.toString(pk2Char));  
	        System.out.println(Arrays.toString(pk3Char));  
	        System.out.println(Arrays.toString(dzChar));  
	    }  
	    //排序 
	    public static void sort(int[] a){  
	        for(int i=1;i<a.length;i++){  
	            for(int j=0;j<i;j++){  
	                if(a[j]<a[i]){  
	                    int temp=a[j];  
	                    a[j]=a[i];  
	                    a[i]=temp;  
	                }  
	            }  
	        }  
	    }  
	    //移除,从牌库中移除随机生成后牌  
	    public static void remove(int[] a,int index){  
	        for(int i=index;i<a.length-1;i++){  
	            a[i]=a[i+1];  
	        }  
	    }  
	    //生成花色，复制到最后的发牌结果中
	    public static void copy(int[] a,String[] d,String[] color,String[] num){  
	        for(int i=0;i<a.length;i++){  
	            int index=a[i];  
	            //53张为小王 
	            if(index==52)d[i]="小王";  
	            //54张为大王 
	            else if(index==53)d[i]="大王";  
	            else{  
	            //花色根据下标对4取余的结果来得到四种花色中的随机值  
	                d[i]=color[index%4]+num[index/4];  
	            }  
	        }  
	    }  

}
